﻿using BLevy.Entidad;
using BLevy.Negocio;
using Microsoft.Reporting.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BLevy.UI
{
    public partial class frmCobradorLiquidacionListadosReporte : Form
    {
        private int? cobrador_id;
        private DateTime? desde;
        private DateTime? hasta;
        public frmCobradorLiquidacionListadosReporte(int? _cobrador_id, DateTime? _desde, DateTime? _hasta)
        {
            InitializeComponent();

            cobrador_id = _cobrador_id;
            desde = _desde;
            hasta = _hasta;
        }

        private void frmCobradorLiquidacionListadosReporte_Load(object sender, EventArgs e)
        {
            try
            {
                var query = from row in CobradoresLiquidaciones.FindAllConCobradorFiltro(cobrador_id, desde, hasta)
                            select new
                            {
                                row.id,
                                row.fecha_liquidacion,
                                cobrador_id = row.cobrador.nombre_completo,
                                row.total,
                                row.estado
                            };

                ReportDataSource rds = new ReportDataSource();
                rds = new ReportDataSource("DataSet1", query);

                this.reportViewer1.LocalReport.ReportEmbeddedResource = "BLevy.UI.Reportes.ReporteCobradorLiquidacion.rdlc";
                this.reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SubReportGetDetalle);
                this.reportViewer1.LocalReport.DataSources.Add(rds);
                this.reportViewer1.RefreshReport();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        private void SubReportGetDetalle(object sender, SubreportProcessingEventArgs e)
        {
            try
            {
                int liquidacion_id = int.Parse(e.Parameters["ID"].Values[0].ToString());

                IList<CobradorLiquidacionDetalle> results = GetDetallePorLiquidacionId(liquidacion_id);

                var query = (from row in results
                             select new
                             {
                                 row.cobrador_cobro.cobro.cupon.numero,
                                 row.cobrador_cobro.cobro.cupon.fecha_emision,
                                 row.cobrador_cobro.fecha_cobro,
                                 row.cobrador_cobro.comision,
                                 row.cobrador_cobro.cobro.total

                             }).ToList();

                ReportDataSource rds = new ReportDataSource("DataSet1", query);
                e.DataSources.Add(rds);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private IList<CobradorLiquidacionDetalle> GetDetallePorLiquidacionId(int liquidacion_id)
        {
            IList<CobradorLiquidacionDetalle> detallesL = null;

            try
            {
                detallesL = CobradoresLiquidaciones.FindLiquidacionDetallesPorLiquidacionId(liquidacion_id);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return detallesL;
        }


    }
}
